var path = require('path');
var express = require('express');
var app = express();

/*   下载   */
app.get('/download', function(req, res) {
  res.download('./app.js');
});


/*   终结响应处理流程   */
app.get('/end', function (req, res) {
    res.status(404).end();
});


/*   发送一个json格式的响应   */
app.get('/json', function (req, res) {
    // 也可以发送
    // res.json('aaa');

    res.json({
        name: 'zx',
        age: '24'
    });
});

/*   重定向   */
app.get('/redirect', function (req, res) {
    res.redirect('/json');
});

/*   渲染视图模板   */

// 视图引擎设定  __dirname是一个常量（全局绝对路径）
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.get('/index', function (req, res) {
    res.render('index', function (err, html) {
        res.send(html);
    });
});


/*  以八位字节流的形式发送文件  */
app.get('/sendFile:app', function (req, res) {
    var option = {
        root: __dirname + '/views/',
        headers: {
            'x-timestamp': Date.now(),
            'x-sent': true
        }
    };


    res.sendFile('index.jade', option ,function (err) {
        if (err) {
            console.log(err);
            res.status(err.status).send();
        } else {
            console.log('ok');
        }
    });

});

/*   设置响应状态代码，并将其以字符串形式作为响应体的一部分发送   */
app.get('/sendstatus', function (req, res) {
    // res.sendStatus(500);
    res.status(500000).send('自定义错误显示！');
});

app.listen(3000);
